package ar.edu.utn.frsf.tpae.a2013.g03.persistencia.model;

import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Objeto del modelo de datos (persistente). Representa un Gasto.
 * 
 * @author Juan Barrionuevo
 */

@Entity
@Table(name = "gst")
//@Inheritance(strategy=InheritanceType.JOINED)
public class Gasto {
	
	@Id
	@Column(name = "gst_id", unique=true , nullable=false )
	@SequenceGenerator(name = "gst_gen", sequenceName = "seq_gst", allocationSize=1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gst_gen")
	private Integer idGasto;
	
	@ManyToOne
	@JoinColumn(name = "gst_slg_id", nullable=false)
	private SolicitudGasto solicitudGasto;
	
	@Column(name = "gst_fech", nullable=false)
	@Temporal(TemporalType.TIMESTAMP)
	private Calendar fecha;
	
	@Column(name = "gst_imp", nullable=false)
	private Float importe;
	
	@Column(name = "gst_nro_fact", nullable=false)
	private String numeroFactura;

	public Gasto (){
		idGasto = null;
		solicitudGasto = null;
		fecha = null;
		importe = null;
		numeroFactura = null;
	}
	
	public Gasto(Integer idGasto, SolicitudGasto solicitudGasto, Calendar fecha,
			Float importe, String numeroFactura) {
		this.idGasto = idGasto;
		this.solicitudGasto = solicitudGasto;
		this.fecha = fecha;
		this.importe = importe;
		this.numeroFactura = numeroFactura;
	}

	public Integer getIdGasto() {
		return idGasto;
	}
	public void setIdGasto(Integer idGasto) {
		this.idGasto = idGasto;
	}
	public SolicitudGasto getSolicitudGasto() {
		return solicitudGasto;
	}
	public void setSolicitudGasto(SolicitudGasto solicitudGasto) {
		this.solicitudGasto = solicitudGasto;
	}
	public Calendar getFecha() {
		return fecha;
	}
	public void setFecha(Calendar fecha) {
		this.fecha = fecha;
	}
	public Float getImporte() {
		return importe;
	}
	public void setImporte(Float importe) {
		this.importe = importe;
	}
	public String getNumeroFactura() {
		return numeroFactura;
	}
	public void setNumeroFactura(String numeroFactura) {
		this.numeroFactura = numeroFactura;
	}
	
}
